<template>
  <div class="addEdit-block"
       :style='{"minHeight":"100vh","padding":"30px","background":"url(http://codegen.caihongy.cn/20230329/eff4ea96c952463cb46b9c79d043ce56.gif) fixed,#f6f6f6"}'
       style="width: 100%;">
    <el-form
        :style='{"padding":"20px","boxShadow":"0 0px 0px #ddd","borderRadius":"0px","background":"none"}'
        class="add-update-preview"
        ref="ruleForm"
        :model="ruleForm"
        :rules="rules"
        label-width="180px"
    >
      <template>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="员工工号"
                      prop="yuangonggonghao">
          <!--          <el-input v-model="ruleForm.yuangonggonghao" placeholder="员工工号" clearable-->
          <!--                    :readonly="ro.yuangonggonghao"></el-input>-->
          <el-select v-model="ruleForm.yuangonggonghao" placeholder="请选择员工">
            <el-option
                v-for="(item,index) in yuangongOptions"
                v-bind:key="index"
                :label="item.yuangonggonghao"
                :value="item.yuangonggonghao">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="员工工号" prop="yuangonggonghao">
          <el-input v-model="ruleForm.yuangonggonghao" placeholder="员工工号" readonly></el-input>
        </el-form-item>
<!--        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="密码" prop="mima">-->
<!--          <el-input v-model="ruleForm.mima" placeholder="密码" clearable :readonly="ro.mima"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="密码" prop="mima">-->
<!--          <el-input v-model="ruleForm.mima" placeholder="密码" readonly></el-input>-->
<!--        </el-form-item>-->
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="员工姓名"
                      prop="yuangongxingming">
          <el-input v-model="ruleForm.yuangongxingming" placeholder="员工姓名" clearable
                    :readonly="ro.yuangongxingming"></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="员工姓名" prop="yuangongxingming">
          <el-input v-model="ruleForm.yuangongxingming" placeholder="员工姓名" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="select" v-if="type!='info'" label="性别" prop="xingbie">
          <el-select disabled v-model="ruleForm.xingbie" placeholder="请选择性别">
            <el-option
                v-for="(item,index) in xingbieOptions"
                v-bind:key="index"
                :label="item"
                :value="item">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="性别" prop="xingbie">
          <el-input v-model="ruleForm.xingbie"
                    placeholder="性别" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="select" v-if="type!='info'" label="部门" prop="bumen">
          <el-select :disabled="ro.bumen" v-model="ruleForm.bumen" placeholder="请选择部门">
            <el-option
                v-for="(item,index) in bumenOptions"
                v-bind:key="index"
                :label="item"
                :value="item">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="部门" prop="bumen">
          <el-input v-model="ruleForm.bumen"
                    placeholder="部门" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="职位" prop="zhiwei">
          <el-select :disabled="ro.zhiwei" v-model="ruleForm.zhiwei" placeholder="请选择职位">
            <el-option
                v-for="(item,index) in bumenOptions2"
                v-bind:key="index"
                :label="item"
                :value="item">
            </el-option>
          </el-select>
          <!--          <el-input v-model="ruleForm.zhiwei" placeholder="职位" clearable :readonly="ro.zhiwei"></el-input>-->
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="职位" prop="zhiwei">
          <el-input v-model="ruleForm.zhiwei" placeholder="职位" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="date" v-if="type!='info'" label="入职时间"
                      prop="ruzhishijian">
          <el-date-picker
              format="yyyy 年 MM 月 dd 日"
              value-format="yyyy-MM-dd"
              v-model="ruleForm.ruzhishijian"
              type="date"
              :readonly="ro.ruzhishijian"
              placeholder="入职时间"
          ></el-date-picker>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-else-if="ruleForm.ruzhishijian" label="入职时间"
                      prop="ruzhishijian">
          <el-input v-model="ruleForm.ruzhishijian" placeholder="入职时间" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="联系方式"
                      prop="lianxifangshi">
          <el-input v-model="ruleForm.lianxifangshi" placeholder="联系方式" clearable
                    :readonly="ro.lianxifangshi"></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="联系方式" prop="lianxifangshi">
          <el-input v-model="ruleForm.lianxifangshi" placeholder="联系方式" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="工资卡号"
                      prop="gongzikahao">
          <el-input v-model="ruleForm.gongzikahao" placeholder="工资卡号" clearable
                    :readonly="ro.gongzikahao"></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="工资卡号" prop="gongzikahao">
          <el-input v-model="ruleForm.gongzikahao" placeholder="工资卡号" readonly></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="身份证"
                      prop="shenfenzheng">
          <el-input v-model="ruleForm.shenfenzheng" placeholder="身份证" clearable
                    :readonly="ro.shenfenzheng"></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="身份证" prop="shenfenzheng">
          <el-input v-model="ruleForm.shenfenzheng" placeholder="身份证" readonly></el-input>
        </el-form-item>

        <el-form-item :style='{"margin":"0 0 20px 0"}' class="input" v-if="type!='info'" label="工作时长"
                      prop="gzsc">
          <el-input v-model="ruleForm.gzsc" placeholder="工作时长" clearable
                    :readonly="ro.gzsc"></el-input>
        </el-form-item>
        <el-form-item :style='{"margin":"0 0 20px 0"}' v-else class="input" label="工作时长" prop="gzsc">
          <el-input v-model="ruleForm.gzsc" placeholder="工作时长" readonly></el-input>
        </el-form-item>
      </template>
      <el-form-item :style='{"padding":"0","margin":"0"}' class="btn">
        <el-button
            :style='{"border":"0","cursor":"pointer","padding":"0","margin":"0 20px 0 0","outline":"none","color":"#fff","borderRadius":"0px","background":"#339933","width":"128px","lineHeight":"40px","fontSize":"16px","height":"40px"}'
            v-if="type!='info'" type="primary" class="btn-success" @click="onSubmit">提交
        </el-button>
        <el-button
            :style='{"border":"0px solid #1b5a90","cursor":"pointer","padding":"0","margin":"0","outline":"none","color":"#333","borderRadius":"0px","background":"#FFCC33","width":"128px","lineHeight":"40px","fontSize":"16px","height":"40px"}'
            v-if="type!='info'" class="btn-close" @click="back()">取消
        </el-button>
        <el-button
            :style='{"border":"0px solid #1b5a90","cursor":"pointer","padding":"0","margin":"0","outline":"none","color":"#333","borderRadius":"0px","background":"#FFCC33","width":"128px","lineHeight":"40px","fontSize":"16px","height":"40px"}'
            v-if="type=='info'" class="btn-close" @click="back()">返回
        </el-button>
      </el-form-item>
    </el-form>


  </div>
</template>
<script>
// 数字，邮件，手机，url，身份证校验
import {isNumber, isIntNumer, isEmail, isPhone, isMobile, isURL, checkIdCard} from "@/utils/validate";

export default {
  data() {
    let self = this
    var validateIdCard = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!checkIdCard(value)) {
        callback(new Error("请输入正确的身份证号码"));
      } else {
        callback();
      }
    };
    var validateUrl = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!isURL(value)) {
        callback(new Error("请输入正确的URL地址"));
      } else {
        callback();
      }
    };
    var validateMobile = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!isMobile(value)) {
        callback(new Error("请输入正确的手机号码"));
      } else {
        callback();
      }
    };
    var validatePhone = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!isPhone(value)) {
        callback(new Error("请输入正确的电话号码"));
      } else {
        callback();
      }
    };
    var validateEmail = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!isEmail(value)) {
        callback(new Error("请输入正确的邮箱地址"));
      } else {
        callback();
      }
    };
    var validateNumber = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!isNumber(value)) {
        callback(new Error("请输入数字"));
      } else {
        callback();
      }
    };
    var validateIntNumber = (rule, value, callback) => {
      if (!value) {
        callback();
      } else if (!isIntNumer(value)) {
        callback(new Error("请输入整数"));
      } else {
        callback();
      }
    };
    return {
      id: '',
      type: '',


      ro: {
        yuangonggonghao: false,
        mima: false,
        yuangongxingming: false,
        xingbie: false,
        bumen: false,
        zhiwei: false,
        ruzhishijian: false,
        lianxifangshi: false,
        gongzikahao: false,
        shenfenzheng: false,
      },


      ruleForm: {
        yuangonggonghao: '',
        mima: '',
        yuangongxingming: '',
        xingbie: '',
        bumen: '',
        zhiwei: '',
        ruzhishijian: '',
        lianxifangshi: '',
        gongzikahao: '',
        shenfenzheng: '',
      },

      xingbieOptions: [],
      yuangongOptions: [],
      bumen: '',
      bumenOptions: [],
      bumenOptions2: [
        "部长",
        "副部长",
        "组长",
        "员工",
      ],


      rules: {
        yuangonggonghao: [
          {required: true, message: '员工工号不能为空', trigger: 'blur'},
        ],
        mima: [],
        yuangongxingming: [
          {required: true, message: '员工姓名不能为空', trigger: 'blur'},
        ],
        xingbie: [],
        bumen: [],
        zhiwei: [],
        ruzhishijian: [],
        lianxifangshi: [
          {validator: validateMobile, trigger: 'blur'},
        ],
        gongzikahao: [],
        shenfenzheng: [
          {validator: validateIdCard, trigger: 'blur'},
        ],
      }
    };
  },
  props: ["parent"],
  computed: {},
  components: {},
  created() {
  },
  watch: {
    'ruleForm.yuangonggonghao': {
      handler(newValue, oldValue) {
        this.yuangongOptions.forEach(item=>{
          if (item.yuangonggonghao == newValue){
            this.ruleForm.yuangongxingming =item.yuangongxingming;
            this.ruleForm.xingbie =item.xingbie;
            this.ruleForm.lianxifangshi =item.lianxifangshi;
            this.ruleForm.bumen =item.bumen;
            this.ruleForm.zhiwei =item.zhiwei;
            this.ruleForm.ruzhishijian =item.ruzhishijian;
            this.ruleForm.gongzikahao =item.gongzikahao;
            this.ruleForm.shenfenzheng =item.shenfenzheng;
            return;
          }
        })

      },

    }
  },
  methods: {
    getYuangongOptions() {
      this.$http({
        url: `yuangong/list`,
        method: "get",
        params: {
          bumen: this.bumen
        }
      }).then(({data}) => {
        if (data && data.code === 0) {
          this.yuangongOptions = data.data.list;
        } else {
          this.$message.error(data.msg);
        }
      })

    },


    // 下载
    download(file) {
      window.open(`${file}`)
    },
    // 初始化
    init(id, type) {
      if (id) {
        this.id = id;
        this.type = type;
      }
      if (this.type == 'info' || this.type == 'else') {
        this.info(id);
      } else if (this.type == 'logistics') {
        this.logistics = false;
        this.info(id);
      } else if (this.type == 'cross') {
        var obj = this.$storage.getObj('crossObj');
        for (var o in obj) {
          if (o == 'yuangonggonghao') {
            this.ruleForm.yuangonggonghao = obj[o];
            this.ro.yuangonggonghao = true;
            continue;
          }
          if (o == 'mima') {
            this.ruleForm.mima = obj[o];
            this.ro.mima = true;
            continue;
          }
          if (o == 'yuangongxingming') {
            this.ruleForm.yuangongxingming = obj[o];
            this.ro.yuangongxingming = true;
            continue;
          }
          if (o == 'xingbie') {
            this.ruleForm.xingbie = obj[o];
            this.ro.xingbie = true;
            continue;
          }
          if (o == 'bumen') {
            this.ruleForm.bumen = obj[o];
            this.ro.bumen = true;
            continue;
          }
          if (o == 'zhiwei') {
            this.ruleForm.zhiwei = obj[o];
            this.ro.zhiwei = true;
            continue;
          }
          if (o == 'ruzhishijian') {
            this.ruleForm.ruzhishijian = obj[o];
            this.ro.ruzhishijian = true;
            continue;
          }
          if (o == 'lianxifangshi') {
            this.ruleForm.lianxifangshi = obj[o];
            this.ro.lianxifangshi = true;
            continue;
          }
          if (o == 'gongzikahao') {
            this.ruleForm.gongzikahao = obj[o];
            this.ro.gongzikahao = true;
            continue;
          }
          if (o == 'shenfenzheng') {
            this.ruleForm.shenfenzheng = obj[o];
            this.ro.shenfenzheng = true;
            continue;
          }
        }


      }


      // 获取用户信息
      this.$http({
        url: `${this.$storage.get('sessionTable')}/session`,
        method: "get"
      }).then(({data}) => {
        if (data && data.code === 0) {
          this.bumen = data.data.bumen;
          this.getYuangongOptions()

          var json = data.data;
          if (this.$storage.get("role") != "管理员") {
            this.ro.bumen = true;
          }
          if (this.$storage.get("role") != "管理员") {
            this.ro.zhiwei = true;
          }
          if (this.$storage.get("role") != "管理员") {
            this.ro.ruzhishijian = true;
          }
        } else {
          this.$message.error(data.msg);
        }
      });

      this.xingbieOptions = "男,女".split(',')
      this.$http({
        url: `option/bumenxinxi/bumenmingcheng`,
        method: "get"
      }).then(({data}) => {
        if (data && data.code === 0) {
          this.bumenOptions = data.data;
        } else {
          this.$message.error(data.msg);
        }
      });

    },
    // 多级联动参数

    info(id) {
      this.$http({
        url: `yuangong/info/${id}`,
        method: "get"
      }).then(({data}) => {
        if (data && data.code === 0) {
          this.ruleForm = data.data;
          //解决前台上传图片后台不显示的问题
          let reg = new RegExp('../../../upload', 'g')//g代表全部
        } else {
          this.$message.error(data.msg);
        }
      });
    },


    // 提交
    onSubmit() {


      var objcross = this.$storage.getObj('crossObj');

      //更新跨表属性
      var crossuserid;
      var crossrefid;
      var crossoptnum;
      if (this.type == 'cross') {
        var statusColumnName = this.$storage.get('statusColumnName');
        var statusColumnValue = this.$storage.get('statusColumnValue');
        if (statusColumnName != '') {
          var obj = this.$storage.getObj('crossObj');
          if (statusColumnName && !statusColumnName.startsWith("[")) {
            for (var o in obj) {
              if (o == statusColumnName) {
                obj[o] = statusColumnValue;
              }
            }
            var table = this.$storage.get('crossTable');
            this.$http({
              url: `${table}/update`,
              method: "post",
              data: obj
            }).then(({data}) => {
            });
          } else {
            crossuserid = this.$storage.get('userid');
            crossrefid = obj['id'];
            crossoptnum = this.$storage.get('statusColumnName');
            crossoptnum = crossoptnum.replace(/\[/, "").replace(/\]/, "");
          }
        }
      }
      this.$refs["ruleForm"].validate(valid => {
        if (valid) {
          if (crossrefid && crossuserid) {
            this.ruleForm.crossuserid = crossuserid;
            this.ruleForm.crossrefid = crossrefid;
            let params = {
              page: 1,
              limit: 10,
              crossuserid: this.ruleForm.crossuserid,
              crossrefid: this.ruleForm.crossrefid,
            }
            this.$http({
              url: "yuangongkaoqin/page",
              method: "get",
              params: params
            }).then(({
                       data
                     }) => {
              if (data && data.code === 0) {
                if (data.data.total >= crossoptnum) {
                  this.$message.error(this.$storage.get('tips'));
                  return false;
                } else {
                  this.$http({
                    url: `yuangongkaoqin/${!this.ruleForm.id ? "save" : "update"}`,
                    method: "post",
                    data: this.ruleForm
                  }).then(({data}) => {
                    if (data && data.code === 0) {
                      this.$message({
                        message: "操作成功",
                        type: "success",
                        duration: 1500,
                        onClose: () => {
                          this.parent.showFlag = true;
                          this.parent.addOrUpdateFlag = false;
                          this.parent.yuangongCrossAddOrUpdateFlag = false;
                          this.parent.search();
                          this.parent.contentStyleChange();
                        }
                      });
                    } else {
                      this.$message.error(data.msg);
                    }
                  });

                }
              } else {
              }
            });
          } else {
            this.$http({
              url: `yuangongkaoqin/${!this.ruleForm.id ? "save" : "update"}`,
              method: "post",
              data: this.ruleForm
            }).then(({data}) => {
              if (data && data.code === 0) {
                this.$message({
                  message: "操作成功",
                  type: "success",
                  duration: 1500,
                  onClose: () => {
                    this.parent.showFlag = true;
                    this.parent.addOrUpdateFlag = false;
                    this.parent.yuangongCrossAddOrUpdateFlag = false;
                    this.parent.search();
                    this.parent.contentStyleChange();
                  }
                });
              } else {
                this.$message.error(data.msg);
              }
            });
          }
        }
      });
    },
    // 获取uuid
    getUUID() {
      return new Date().getTime();
    },
    // 返回
    back() {
      this.parent.showFlag = true;
      this.parent.addOrUpdateFlag = false;
      this.parent.yuangongCrossAddOrUpdateFlag = false;
      this.parent.contentStyleChange();
    },
  }
};
</script>
<style lang="scss" scoped>
.amap-wrapper {
  width: 100%;
  height: 500px;
}

.search-box {
  position: absolute;
}

.el-date-editor.el-input {
  width: auto;
}

.add-update-preview .el-form-item /deep/ .el-form-item__label {
  padding: 0 10px 0 0;
  color: #666;
  font-weight: 500;
  width: 180px;
  font-size: 16px;
  line-height: 40px;
  text-align: right;
}

.add-update-preview .el-form-item /deep/ .el-form-item__content {
  margin-left: 180px;
}

.add-update-preview .el-input /deep/ .el-input__inner {
  border: 1px solid #ddd;
  border-radius: 0px;
  padding: 0 12px;
  box-shadow: 1px 2px 3px #eee;
  outline: none;
  color: #aaa;
  width: 400px;
  font-size: 16px;
  height: 40px;
}

.add-update-preview .el-select /deep/ .el-input__inner {
  border: 1px solid #ddd;
  border-radius: 0px;
  padding: 0 10px;
  box-shadow: 1px 2px 3px #eee;
  outline: none;
  color: #aaa;
  width: 200px;
  font-size: 16px;
  height: 40px;
}

.add-update-preview .el-date-editor /deep/ .el-input__inner {
  border: 1px solid #ddd;
  border-radius: 0px;
  padding: 0 10px 0 30px;
  box-shadow: 1px 2px 3px #eee;
  outline: none;
  color: #aaa;
  width: 200px;
  font-size: 16px;
  height: 40px;
}

.add-update-preview /deep/ .el-upload--picture-card {
  background: transparent;
  border: 0;
  border-radius: 0;
  width: auto;
  height: auto;
  line-height: initial;
  vertical-align: middle;
}

.add-update-preview /deep/ .upload .upload-img {
  border: 1px solid #ddd;
  cursor: pointer;
  border-radius: 0px;
  color: #ccc;
  background: #fff;
  width: 200px;
  font-size: 32px;
  line-height: 100px;
  text-align: center;
  height: 100px;
}

.add-update-preview /deep/ .el-upload-list .el-upload-list__item {
  border: 1px solid #ddd;
  cursor: pointer;
  border-radius: 0px;
  color: #ccc;
  background: #fff;
  width: 200px;
  font-size: 32px;
  line-height: 100px;
  text-align: center;
  height: 100px;
}

.add-update-preview /deep/ .el-upload .el-icon-plus {
  border: 1px solid #ddd;
  cursor: pointer;
  border-radius: 0px;
  color: #ccc;
  background: #fff;
  width: 200px;
  font-size: 32px;
  line-height: 100px;
  text-align: center;
  height: 100px;
}

.add-update-preview .el-textarea /deep/ .el-textarea__inner {
  border: 1px solid #ddd;
  border-radius: 0px;
  padding: 12px;
  box-shadow: 1px 2px 3px #eee;
  outline: none;
  color: #aaa;
  width: 400px;
  font-size: 16px;
  min-height: 120px;
  height: auto;
}
</style>
